#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QTimer>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:

    void on_clearRecv_clicked();

    void on_onceSend_clicked();

    void on_autoSend_clicked(bool checked);

    void on_clearSend_clicked();

    void on_openUart_toggled(bool checked);

    void on_sendSetStrDisplay_clicked();

    void on_sendSetHexDisplay_clicked();

    void on_recvSetStrDisplay_clicked();

    void on_recvSetHexDisplay_clicked();

    void serialReadyRead();
    void timerOutSendData();

private:
    void setColor();
    void setPortNameComboBox();
    void setStopBitComboBox();
    void setChkBitComboBox();
    void setDataBitComboBox();
    void setBaudRateComboBox();
    void setDataBit(qint32 data);
    void setChkBit(qint32 chk);
    void setStopBit(qint32 stop);
    void setComboBoxEnable(bool val);
    char charToHex(char ch);
    void stringToHex(QString &str, QByteArray &sendData);

private:
    Ui::Widget *ui;
    QSerialPort serial;
    QTimer time;
    bool sendChar = true;           // true:字符发送，false:十六进制发送
    bool recvDisplayChar = true;    // true:字符显示，false:十六进制显示
};
#endif // WIDGET_H
